import {
	linkSymbol,
	templateBasePath
} from '@/config/file.js'
/**
 * 获取文件夹，不存在会自动创建
 * @param {Object} dirPath  目录路径
 * @param {boolean} create  不存在是否创建
 */
export async function getOrCreateDir(dirPath, create = true) {
	return new Promise(async (resolve, reject) => {
		plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
			fs.root.getDirectory(
				dirPath, {
					create,
				},
				function(dirEntry) {
					resolve(dirEntry)
				},
				(err) => {
					console.log(err, '获取或创建文件夹失败');
					reject(err)
				}
			)
		})
	})
}

// 读取目录列表
export const getDirList = () => {
	return new Promise((resolve, reject) => {
		let arr = []
		plus.io.resolveLocalFileSystemURL(
			templateBasePath,
			function(entry) {
				let directoryReader = entry.createReader()
				directoryReader.readEntries(
					function(entries) {
						for (let i = 0; i < entries.length; i++) {
							console.log('文件信息', entries[i])
							arr.push(entries[i].name)
						}
						resolve(arr)
					},
					function(e) {
						console.log('访问目录失败', e)
						resolve([])
					}
				)
			},
			function(e) {
				console.log('访问指定目录失败', e)
				resolve([])
			}
		)
	})
}

// 创建模板数据
export const createTemplateJson = async (data) => {
	console.log(data, 'data');
	return new Promise(async (resolve, reject) => {
		// 首先创建模板文件夹,如果已存在会直接返回文件夹对象
		// 文件夹名称为模板id + 模板名称拼接而成
		const dirEntry = await getOrCreateDir(
			`${templateBasePath}/${data.id + linkSymbol + data.name}`,
			true
		)
		// 在文件夹里创建templateData.json保存模板数据
		dirEntry.getFile('templateData.json', {
			create: true
		}, (fileEntry) => {
			fileEntry.file((file) => {
				fileEntry.createWriter(
					function(writer) {
						writer.onwrite = function(e) {
							resolve(true)
						}
						writer.write(JSON.stringify(data))
					},
					function(error) {
						reject(error)
					}
				)
			})
		})
	})
}

export default {
	createTemplateJson
}